Computer imaging pre-processing for automated medication dispensing analysis

ABSTRACT

A method includes capturing a first image of medication held by a receptacle. The method includes creating a second image based on the first image. The method includes determining a first subset of pixels of the second image that are more likely to correspond to the receptacle. The method includes processing the second image along a first axis by, for each point: defining a line perpendicularly intersecting the first axis at the point and counting how many of the pixels located along the line are in the first subset. The method includes determining first and second local maxima of the counts. The method includes estimating positions of first and second edges of the receptacle based on positions of the local maxima. The method includes defining an ellipse based on the first and second edges and excluding areas of the first image outside the defined ellipse from further processing.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional Application No. 62/590,255, filed Nov. 22, 2017. The entire disclosure of the application referenced above is incorporated by reference.

FIELD

The present disclosure relates to image processing and, more particularly, to image pre-processing that excludes irrelevant features from further image processing steps.

BACKGROUND

A pharmacy may process and fill a large number of prescriptions from prescription orders. Automatic systems may be used by a high-volume pharmacy to process and fulfill prescriptions. Errors in filling a prescription, such as when the wrong medication is dispensed or when multiple medications are erroneously combined, are very difficult to detect. Human checking is very expensive and suffers from all the fragilities of human abilities. For example, a human's attention may be diverted, the human's attention may decrease over time, and the human eye may not be sensitive to certain discrepancies in dispensed medication.

However, training a computer to recognize dispensing errors with medication is very difficult. Recognizing the myriad ways in which medication can be dispensed and the innumerable angles at which individual medication items may be arranged in the dispensed product poses a significant challenge to computer algorithms. Further, computer algorithms may have difficulty differentiating between the dispensed medication and the package into which the medication was dispensed. For these reasons, many pharmacies do not use automated review of every dispensed medication, and, instead, rely on human spot checks of a small (often, random) subset of dispensed medications.

The background description provided here is for the purpose of generally presenting the context of the disclosure. Work of the presently named inventors, to the extent it is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure.

SUMMARY

A machine includes a camera configured to capture a first image of medication held by a receptacle. The machine includes memory hardware that stores code and processor hardware that executes the code stored by the memory hardware. The code implements a color processing module configured to create a second image based on the first image in which each pixel of the second image is identified by a single value. The code implements a pixel identification module configured to divide pixels of the second image into first and second mutually exclusive subsets of pixels. Pixels of the first subset are more likely to correspond to the receptacle than are pixels of the second subset. The code implements a scanning module configured to process the second image along a first axis by, for each point along the first axis: defining a line that is perpendicular to the first axis and intersects the first axis at the point; counting how many of the pixels in the second image located along the line are in the first subset; and recording the count. The code implements a maxima detection module configured to determine a first local maximum of the counts and a second local maximum of the counts. The code implements an elliptic calculation module configured to estimate a position of a first edge of the receptacle based on a position of the first local maximum along the first axis, estimate a position of a second edge of the receptacle based on a position of the second local maximum along the first axis, and define an ellipse based on the first and second edges. The code implements an output module configured to output a processed image based on the first image. The processed image indicates that areas of the first image that are outside the defined ellipse are excluded from further processing.

In other features, the color processing module is configured to, for each pixel of the first image, generate a corresponding pixel of the second image exclusive of any other pixels of the first image. In other features, the color processing module is configured to, for each pixel of the first image, generate the corresponding pixel of the second image by calculating a grayscale value of the pixel. In other features, the color processing module is configured to, for each pixel of the first image, generate the corresponding pixel of the second image by: setting a green value of the corresponding pixel to a sum of a green value of the pixel and a blue value of the pixel minus a red value of the pixel; setting a green value of the corresponding pixel to zero; and setting a blue value of the corresponding pixel to zero.

In other features, the output module is configured to include metadata with the processed image. The metadata identifies the areas of the first image that are excluded from further processing. In other features, the output module is configured to set the areas of the first image that are excluded from further processing to a black color. In other features, the maxima detection module is configured to determine the first local maximum within a first region of the second image and determine the second local maximum within a second region of the second image. The first region and the second region are non-overlapping. A third region of the second image is nonzero in size, does not overlap the first region, and does not overlap the second region.

In other features, the scanning module is configured to process the second image along a second axis by, for each point along the second axis: defining a line that is perpendicular to the second axis and intersects the second axis at the point; counting how many of the pixels in the second image located along the line are in the first subset; and recording the count. The code further implements a second maxima detection module configured to determine a first local maximum of the counts for the second axis and a second local maximum of the counts for the second axis. The elliptic calculation module is configured to: estimate a position of a third edge of the receptacle based on a position of the first local maximum along the second axis; estimate a position of a fourth edge of the receptacle based on a position of the second local maximum along the second axis; and define the ellipse based on the first, second, third, and fourth edges.

In other features, the first axis is parallel to a first edge of the first image and the second axis is perpendicular to the first axis. In other features, the elliptic calculation module is configured to, in response to the second local maximum being less than the first local maximum by more than a predetermined amount, estimate the position of the second edge of the receptacle to be an edge of the first image.

A method includes capturing a first image of medication held by a receptacle. The method includes creating a second image based on the first image in which each pixel of the second image is identified by a single value. The method includes dividing pixels of the second image into first and second mutually exclusive subsets of pixels. Pixels of the first subset are more likely to correspond to the receptacle than are pixels of the second subset. The method includes processing the second image along a first axis by, for each point along the first axis: defining a line that is perpendicular to the first axis and intersects the first axis at the point; counting how many of the pixels in the second image located along the line are in the first subset; recording the count. The method includes determining a first local maximum of the counts and a second local maximum of the counts. The method includes estimating a position of a first edge of the receptacle based on a position of the first local maximum along the first axis. The method includes estimating a position of a second edge of the receptacle based on a position of the second local maximum along the first axis. The method includes defining an ellipse based on the first and second edges. The method includes outputting a processed image based on the first image. The processed image indicates that areas of the first image that are outside the defined ellipse are excluded from further processing.

In other features, the creating the second image includes, for each pixel of the first image, generating a corresponding pixel of the second image exclusive of any other pixels of the first image. In other features, the creating the second image includes, for each pixel of the first image, generating the corresponding pixel of the second image by: setting a green value of the corresponding pixel to a sum of a green value of the pixel and a blue value of the pixel minus a red value of the pixel; setting a green value of the corresponding pixel to zero; and setting a blue value of the corresponding pixel to zero.

In other features, the method includes including metadata with the processed image. The metadata identifies the areas of the first image that are excluded from further processing. In other features, the method includes setting the areas of the processed image that are excluded from further processing to a black color. In other features, the first local maximum is determined within a first region of the second image. The second local maximum is determined within a second region of the second image. The first region and the second region are non-overlapping. A third region of the second image is nonzero in size, does not overlap the first region, and does not overlap the second region.

In other features, the method includes processing the second image along a second axis by, for each point along the second axis: defining a line that is perpendicular to the second axis and intersects the second axis at the point; counting how many of the pixels in the second image located along the line are in the first subset; and recording the count. The method includes determining a first local maximum of the counts for the second axis and a second local maximum of the counts for the second axis. The method includes estimating a position of a third edge of the receptacle based on a position of the first local maximum along the second axis. The method includes estimating a position of a fourth edge of the receptacle based on a position of the second local maximum along the second axis. The method includes defining the ellipse based on the first, second, third, and fourth edges.

In other features, the first axis is parallel to a first edge of the first image and the second axis is perpendicular to the first axis. In other features, the method includes, in response to the second local maximum being less than the first local maximum by more than a predetermined amount, estimating the position of the second edge of the receptacle to be an edge of the first image.

A non-transitory computer-readable medium stores instructions that include capturing a first image of medication held by a receptacle. The instructions include creating a second image based on the first image in which each pixel of the second image is identified by a single value. The instructions include dividing pixels of the second image into first and second mutually exclusive subsets of pixels. Pixels of the first subset are more likely to correspond to the receptacle than are pixels of the second subset. The instructions include processing the second image along a first axis by, for each point along the first axis: defining a line that is perpendicular to the first axis and intersects the first axis at the point; counting how many of the pixels in the second image located along the line are in the first subset; and recording the count. The instructions include determining a first local maximum of the counts and a second local maximum of the counts. The instructions include estimating a position of a first edge of the receptacle based on a position of the first local maximum along the first axis. The instructions include estimating a position of a second edge of the receptacle based on a position of the second local maximum along the first axis. The instructions include defining an ellipse based on the first and second edges. The instructions include outputting a processed image based on the first image. The processed image indicates that areas of the first image that are outside the defined ellipse are excluded from further processing.

Further areas of applicability of the present disclosure will become apparent from the detailed description, the claims, and the drawings. The detailed description and specific examples are intended for purposes of illustration only and are not intended to limit the scope of the disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

The present disclosure will become more fully understood from the detailed description and the accompanying drawings.

FIG. 1 is a functional block diagram of a sample implementation of a system for a high-volume pharmacy.

FIG. 2 is a functional block diagram of an example pharmacy fulfillment device that may be deployed within the system of FIG. 1, according to an example embodiment.

FIG. 3 is a functional block diagram of an example order processing device that may be deployed within the system of FIG. 1, according to an example embodiment.

FIG. 4 is a graphical representation of a side view of a hypothetical dispensing system along with a functional block diagram.

FIG. 5A is an example image prior to pre-processing according to the principles of the present disclosure.

FIG. 5B is an example image once image pre-processing according to the principles of the present disclosure is applied to the image of FIG. 5A.

FIG. 6 is graphical example of a slice-by-slice analysis of an image.

FIG. 7 is a plot of example data acquired by analyzing an image slice-by-slice.

FIG. 8 is a functional block diagram of example processing hardware according to the principles of the present disclosure.

FIG. 9 is a functional block diagram of an example preprocessing module according to the principles of the present disclosure.

FIG. 10 is a flowchart of high-level pharmacy processing.

FIGS. 11A and 11B together form a flowchart of example preprocessing operation according to the principles of the present disclosure.

FIG. 12 is a functional block diagram of a machine in the example form of a computer system within which a set of processor-executable instructions for causing the machine to perform methodologies discussed herein may be executed or stored.

In the drawings, reference numbers may be reused to identify similar and/or identical elements.

DETAILED DESCRIPTION Introduction

Example systems and methods for computer imaging pre-processing for automated medication dispensing analysis in, for example, a pharmacy, are described. Generally, a prescription order is generated for a high-volume pharmacy. The prescription order may include more than one prescription drug for fulfillment. Each prescription drug in a prescription order is an order component of the prescription order. Generally, the order components are pill bottles, liquid bottles, blister packs, unit-of-use packs, injectable package, spray bottles, tubes, ampoules, drop counters, insulated boxes, child-resistant containers, or other packaging having a quantity of a prescription drug contained therein.

While the medications described in this disclosure will be referred to as prescription drugs, the principles of the present disclosure also apply to nonprescription medications. Further, while various receptacles are capable of receiving prescription drugs, the present disclosure will focus on the example container being a cylindrical bottle. In general terms, dispensing equipment dispenses prescription drugs according to a prescription order into a bottle (sometimes referred to as a pill bottle). To ensure that the correct drugs are dispensed into the bottle, including that no unexpected prescription drugs are included (even a single one), a photo is taken from above the bottle. The photo is processed to determine a confidence level that the prescription drugs in the bottle match the prescription order and do not include any unexpected prescription drugs.

Many factors affect the quality of the image, such as lighting, camera position with respect to the bottle, camera angle with respect to the bottle, cleanliness of the lens of the camera, etc. Further, across different dispensing lines and different dispensing facilities, the hardware set-up may not be identical. Additionally, each image will generally include some areas outside the bottle or, if the imaged area is reduced, portions of the bottle itself may be omitted in the image. Before automatic image analysis can proceed, preprocessing may be performed to identify the edges of the bottle. Once the edges of the bottle are identified, image analysis can ignore areas outside of the bottle. Moreover, the preprocessing may exclude some or all of the bottle so that image processing can focus only on the prescription drugs.

By enhancing the contrast or performing other color processing, the bottle may generally show up with the darkest pixels. Once the darkest pixels in the image are identified, the image is analyzed column by column. With the knowledge that the bottle will be circular or at least elliptic, the first third and last third of the image are analyzed to attempt to identify the edges of the bottle. The left third of the image is analyzed to identify a likely left edge of the pill bottle while the right third is analyzed to identify a likely right edge of the pill bottle.

The highest number of dark pixels per column will occur at the edge of the bottle. The highest number of dark pixels, therefore, establishes the edge of the bottle. If the highest number of pixels in the first third and last third are too different, the edge with a much lower peak number of pixels may actually be outside the borders of the image. The edge's absence in the image explains why the peak number of dark pixels is so much lower.

After analyzing the image column by column, the analysis switches to row by row to establish the top and bottom edges of the pill bottle. Once the four edges are defined, an ellipse is calculated based on the locations of the edges. Everything outside the ellipse may be excluded from further analysis. Applying this preprocessing may significantly reduce the number of false positives in which the machine vision system believes an unwanted prescription drug was dispensed into the bottle. The preprocessing may also reduce false negatives where an unwanted prescription drug is present in the bottle but is not identified.

High-Level Block Diagram

FIG. 1 is a block diagram of an example implementation of a system 100 for a high-volume pharmacy, according to an example embodiment. While the system 100 is generally described as being deployed in a high-volume pharmacy or a fulfillment center (e.g., a mail order pharmacy, a direct delivery pharmacy, etc., and the like), the system 100 and/or components thereof may otherwise be deployed (e.g., in a lower volume pharmacy, etc.). A high-volume pharmacy may be a pharmacy that is capable of filling prescriptions automatically, mechanically, manually, or a combination thereof. The system 100 may include a benefit manager device 102, a pharmacy device 106, and a user device 108 in communication with each other directly and/or over a network 104. The system may also include a storage device 110.

The benefit manager device 102 is a device operated by an entity that is at least partially responsible for creation and/or management of the pharmacy or drug benefit. While such entity operating the benefit manager device 102 is typically a pharmacy benefit manager (PBM), other entities may operate the benefit manager device 102 on behalf of themselves (i.e., the PBMs) or other entities. For example, the benefit manager device 102 may be operated by a health plan, a retail pharmacy chain, a drug wholesaler, a data analytics, or other type of software-related company, etc., or the like. In some embodiments, a PBM that provides the pharmacy benefit may also provide one or more than one additional benefits including a medical or health benefit, a dental benefit, a vision benefit, a wellness benefit, a radiology benefit, a pet care benefit, an insurance benefit, a long term care benefit, a nursing home benefit, etc., and the like. The PBM may, in addition to its PBM operations, operate one or more than one pharmacies. The pharmacies may be retail pharmacies, mail order pharmacies, etc.

Some of the operations of the PBM that operates the benefit manager device 102 may include the following activities and processes. A member (or a person on behalf of the member) of a pharmacy benefit plan may obtain a prescription drug at a retail pharmacy location (e.g., a location of a physical store, etc.) from a pharmacist or a pharmacist technician. The member may also obtain the prescription drug through mail order drug delivery from a mail order pharmacy location, which may be the system 100. In some embodiments, the member may obtain the prescription drug directly or indirectly through the use of a machine, such as a kiosk, vending unit, mobile electronic device, or a different type of mechanical, electrical, electronic communication device and/or computing device. Such a machine may be filled with the prescription drug in prescription packaging, which may include multiple prescription components, by the system 100. The pharmacy benefit plan is administered by or through the benefit manager device 102.

The member may have a copayment for the prescription drug that reflects an amount of money that the member is responsible to pay the pharmacy for the prescription drug. The money paid by the member to the pharmacy may come from personal funds of the member, a health savings account (HSA) of the member or the member's family, a health reimbursement arrangement (HRA) of the member or the member's family, a flexible spending account (FSA) of the member or the member's family, etc., or the like. In some instances, an employer of the member may directly or indirectly fund or reimburse the member for the copayments.

The amount of the copayment required by the member may vary with different pharmacy benefit plans having different plan sponsors or clients and/or for different prescription drugs. The member's copayment may be a flat copayment (e.g., $10, etc.), co-insurance (e.g., 10%, etc.), and/or a deductible (e.g., for first $500 of annual prescription drug expense, etc.) for certain prescription drugs, certain types and/or classes of prescription drugs, and/or all prescription drugs. The copayment may be stored in the storage device 110 or determined by the benefit manager device 102.

In some instances, the member may not pay the copayment or may only pay a portion of the copayment for the prescription drug. For example, if a usual and customary cost for a generic version of a prescription drug is $4, and the member's flat copayment is $20 for the prescription drug, the member may only need to pay $4 to receive the prescription drug. In another example involving a worker's compensation claim, no copayment may be due by the member for the prescription drug.

In addition, copayments may also vary based on different delivery channels used for the prescription drug to be received. For example, the copayment for receiving the prescription drug from a mail order pharmacy location may be less than the copayment for receiving the prescription drug from a retail pharmacy location.

In conjunction with receiving a copayment (if any) from the member and dispensing the prescription drug to the member, the pharmacy submits a claim to the PBM for the prescription drug. After receiving the claim, the PBM, e.g., the benefit manager device 102, may perform certain adjudication operations including verifying eligibility for the member, identifying/reviewing an applicable formulary for the member to determine any appropriate copayment, coinsurance, and deductible for the prescription drug, and performing a drug utilization review (DUR) on the member. Further, the PBM may provide a response to the pharmacy, e.g., the pharmacy system 100, following performance of at least some of the aforementioned operations.

As part of the adjudication, a plan sponsor (or the PBM on behalf of the plan sponsor) ultimately reimburses the pharmacy for filling the prescription drug when the prescription drug was successfully adjudicated.

The aforementioned adjudication operations generally occur before the copayment is received and the prescription drug is dispensed. However in some instances, these operations may occur simultaneously, substantially simultaneously, or in a different order. In addition, more or less adjudication operations may be performed as at least part of the adjudication process.

The amount of reimbursement paid to the pharmacy by a plan sponsor and/or money paid by the member may be determined at least partially based on types of pharmacy network in which the pharmacy is included. In some embodiments, the amount may also be determined based on other factors. For example, if the member pays the pharmacy for the prescription drug without using the prescription or drug benefit provided by the PBM, the amount of money paid by the member may be higher than when the member uses the prescription or drug benefit. In some embodiments, the amount of money received by the pharmacy for dispensing the prescription drug and for the prescription drug itself may be higher than when the member uses the prescription or drug benefit. Some or all of the foregoing operations may be performed by executing instructions stored in the benefit manager device 102 and/or an additional device.

Examples of the network 104 include Mobile Communications (GSM) network, a code division multiple access (CDMA) network, 3rd Generation Partnership Project (3GPP), an Internet Protocol (IP) network, a Wireless Application Protocol (WAP) network, a WiFi network, or an IEEE 802.11 standards network, as well as various combinations thereof. The network 104 may include optical network. The network 104 may be a local area network or a global communication network, such as the Internet. In some embodiments, the network 104 may include a network dedicated to prescription orders, e.g., a prescribing network such as the electronic prescribing network operated by Surescripts of Arlington, Va.

Moreover, although the system shows a single network 104, multiple networks can be used. The multiple networks may communicate in series with each other to link the devices 102-110 or in parallel to link the devices 102-110.

The pharmacy device 106 may be a device associated with a retail pharmacy location (e.g., an exclusive pharmacy location, a grocery store with a retail pharmacy, or a general sales store with a retail pharmacy) or other type of pharmacy location at which a member attempts to obtain a prescription. The pharmacy device 106 may be utilized by the pharmacy to submit the claim to the PBM for adjudication.

Additionally, in some embodiments, the pharmacy device 106 may enable information exchange between the pharmacy and the PBM, for example, to allow the sharing of member information such as drug history, and the like, that may allow the pharmacy to better service a member (e.g., by providing more informed therapy consultation and drug interaction information, etc.). In some embodiments, the benefit manager device 102 may track prescription drug fulfillment and/or other information for patients that are not members or have not identified themselves as members, at the time (or in conjunction with the time) in which they seek to have a prescription filled at a pharmacy.

The pharmacy device 106 may include an order processing device 114, a pharmacy management device 116, and a pharmacy fulfillment device 112 in communication with each other directly and/or over the network 104.

The order processing device 114 may receive information regarding filling prescriptions and may direct an order component to one or more devices of the pharmacy fulfillment device 112 at a pharmacy. The pharmacy fulfillment device 112 may fulfill, dispense, aggregate, and/or pack the order components of the prescription drugs in accordance with one or more prescription orders directed by the order processing device 114. The order processing device 114 may be deployed in the system 100, or may otherwise be used.

In general, the order processing device 114 is a device located within or otherwise associated with the pharmacy to enable fulfillment of a prescription and dispensing prescription drugs by the pharmacy fulfilment device 112. In some embodiments, the order processing device 114 may be an external order processing device separate from the pharmacy and communicate with other devices located within the pharmacy.

For example, the external order processing device may communicate with an internal pharmacy order processing device and/or other devices located within the system 100. In some embodiments, the external order processing device may have limited functionality (e.g., as operated by a patient requesting fulfillment of a prescription drug), while the internal pharmacy order processing device may have greater functionality (e.g., as operated by a pharmacist).

The order processing device 114 may track the prescription order as it is fulfilled by the pharmacy fulfillment device 112. The prescription order may include one or more than one prescription drugs to be filled by the pharmacy. The order processing device 114 may make pharmacy routing decisions and/or order consolidation decisions for the particular prescription order. The pharmacy routing decisions include what device(s) in the pharmacy are responsible for filling or otherwise handling certain portions of the prescription order. The order consolidation decisions include whether portions of one prescription order or multiple prescription orders should be shipped together for a patient or a patient family. The order processing device 114 may also track and/or schedule literature or paperwork associated with each prescription order or multiple prescription orders that are being shipped together. In some embodiments, the order processing device 114 may operate in combination with the pharmacy management device 116.

The order processing device 114 may include circuitry, a processor, a memory to store data and instructions, and communication functionality. The order processing device 114 is dedicated to performing processes, methods and/or instructions described herein. Other types of electronic devices specifically configured to implement with the processes, methods and/or instructions described herein may also be used.

In some embodiments, at least some functionalities of the order processing device 114 may be included in the pharmacy management device 116. The order processing device 114 may be in a client-server relationship with the pharmacy management device 116, in a peer-to-peer relationship with the pharmacy management device 116, or in a different type of relationship with the pharmacy management device 116. The order processing device 114 and/or the pharmacy management device 116 may communicate directly (e.g., by utilizing a local storage, etc.) and/or through the network 104 (e.g., by utilizing a cloud configuration or software as a service. etc.) with the storage device 110.

The user device 108 is used by a device operator. The device operator may be a user (e.g., an employee, a contractor, a benefit member, etc.) associated with a software development project. Other device operators may also operate the user device 108.

The user device 108 may be a stand-alone device that solely provides at least some of the functionality to enable analysis of software development risks, or may be a multi-use device that has functionality outside of analysis of software development risks. Examples of the user device 108 include a set-top box (STB), a receiver card, a mobile telephone, a personal digital assistant (PDA), a display device, a portable gaming unit, and a computing system, etc. Other devices, however, may also be used. In some embodiments, the computing system may include a mobile computing device. For example, the user device 108 may include a mobile electronic device, such an iPhone or iPad by Apple, Inc., mobile electronic devices powered by Android by Google, Inc., and a Blackberry by Research In Motion Limited. The user device 108 may also include other computing devices, such as desktop computing devices, notebook computing devices, netbook computing devices, gaming devices, and the like. Other types of electronic devices may also be used.

The storage device 110 may include: a non-transitory storage (e.g., memory, hard disk, CD-ROM, etc.) in communication with the benefit manager device 102, the pharmacy device 106, and/or the user device 108 directly and/or over the network 104. The non-transitory storage may store order data 118, member data 120, claims data 122, drug data 124, prescription data 126, and/or plan sponsor data 128. Further, the system 100 may include additional devices, which may communicate with each other directly or over the network 104.

The order data 118 may be related to a prescription order. The order data may include type of the prescription drug (e.g., drug name and strength, etc.) and quantity of the prescription drug, etc. The order data 118 may also include data used for completion of the prescription, such as prescription materials. In general, prescription materials include an electronic copy of information regarding the prescription drug for inclusion with or otherwise in conjunction with the fulfilled prescription. The prescription materials may include electronic information regarding drug interaction warnings, recommended usage, possible side effects, expiration date, date of prescribing, or the like. The order data 118 may be used by a high volume fulfillment center to fulfill a pharmacy order.

In some embodiments, the order data 118 includes verification information associated with fulfillment of the prescription in the pharmacy. For example, the order data 118 may include videos and/or images taken of (i) the prescription drug prior to dispensing, during dispensing, and/or after dispensing, (ii) the prescription container (e.g., a prescription bottle and sealing lid, prescription packaging and the like) used to contain the prescription drug prior to dispensing, during dispensing, and/or after dispensing, (iii) the packaging and/or packaging materials used to ship or otherwise deliver the prescription drug prior to dispensing, during dispensing, and/or after dispensing, and/or (iv) the fulfillment process within the pharmacy. Other types of verification information such as bar code data read from pallets, bins, trays, carts, and the like used to transport prescriptions within the pharmacy may also be stored as order data 118.

The member data 120 includes information regarding the members associated with the PBM. The information stored as member data 120 may include personal information, personal health information, protected health information, and the like. Examples of the member data 120 include name, address, telephone number, e-mail address, prescription drug history, etc., and the like. The member data 120 may include a plan sponsor identifier that identifies the plan sponsor associated with the member and/or a member identifier that identifies the member to the plan sponsor. The member data 120 may include a member identifier that identifies the plan sponsor associated with the patient and/or a patient identifier that identifies the patient to the plan sponsor. The member data 120 may also include, by way of example, dispensation preferences such as type of label, type of cap, message preferences, language preferences, or the like.

The member data 120 may be accessed by various devices in the pharmacy, (e.g., the high volume fulfillment center, etc.), to obtain information utilized for fulfillment and shipping of prescription orders. In some embodiments, an external order processing device operated by or on behalf of a member may have access to at least a portion of the member data 120 for review, verification, etc., or other purposes.

In some embodiments, the member data 120 may include information for persons who are patients of the pharmacy but are not members in the pharmacy benefit plan being provided by the PBM. For example, these patients may obtain drug directly from the pharmacy, through a private label service offered by the pharmacy, the high volume fulfillment center, or otherwise. In general, the use of the terms member and patient may be used interchangeably herein.

The claims data 122 includes information regarding pharmacy claims adjudicated by the PBM under a drug benefit program provided by the PBM for one, or more than one, plan sponsors. In general, the claims data 122 includes an identification of the client that sponsors the drug benefit program under which the claim is made, and/or the member that purchased the prescription drug giving rise to the claim, the prescription drug that was filled by the pharmacy (e.g., the national drug code number, etc.), the dispensing date, generic indicator, GPI number, medication class, the cost of the prescription drug provided under the drug benefit program, the copay/coinsurance amount, rebate information, and/or member eligibility, etc. Additional information may be included.

In some embodiments, other types of claims beyond prescription drug claims may be stored in the claims data 122. For example, medical claims, dental claims, wellness claims, or other type of health care-related claims for members may be stored as a portion of the claims data 122.

In some embodiments, the claims data 122 includes claims that identify the members with whom the claims are associated. In some embodiments, the claims data 122 includes claims that have been de-identified (e.g., associated with a unique identifier but not with a particular, identifiable member, etc.).

The drug data 124 may include drug name (e.g., technical name and/or common name, etc.), other names by which the drug is known by, active ingredients, an image of the drug (e.g., in pill form, etc.), and the like. The drug data 124 may include information associated with a single medication or multiple medications.

The prescription data 126 may include information regarding prescriptions that may be issued by prescribers on behalf of patients, who may be members of the pharmacy benefit plan, for example to be filled by a pharmacy. Examples of the prescription data 126 include patient names, medication or treatment (such as lab tests), dosing information, and the like. The prescriptions may be electronic prescriptions, paper prescriptions that have been scanned, or otherwise. In some embodiments, the dosing information reflects a frequency of use (e.g., once a day, twice a day, before each meal, etc.) and a duration of use (e.g., a few days, a week, a few weeks, a month, etc.).

In some embodiments, the order data 118 may be linked to associated member data 120, claims data 122, drug data 124, and/or prescription data 126.

The plan sponsor data 128 includes information regarding the plan sponsors of the PBM. Examples of the plan sponsor data 128 include company name, company address, contact name, contact telephone number, contact e-mail address, etc., and the like.

FIG. 2 illustrates the pharmacy fulfillment device 112, according to an example embodiment. The pharmacy fulfillment device 112 may be used to process and fulfill prescriptions and prescription orders. After fulfillment, the fulfilled prescriptions are packed for shipping.

The pharmacy fulfillment device 112 may include devices in communication with the benefit manager device 102, the order processing device 114, and/or the storage device 110, directly or over the network 104. Specifically, the pharmacy fulfillment device 112 may include pallet sizing and pucking device(s) 206, loading device(s) 208, inspect device(s) 210, unit of use device(s) 212, automated dispensing device(s) 214, manual fulfillment device(s) 216, review devices 218, imaging device(s) 220, cap device(s) 222, accumulation devices 224, packing device(s) 226, literature device(s) 228, unit of use packing device(s) 230, and mail manifest device(s) 232. Further, the pharmacy fulfillment device 112 may include additional devices, which may communicate with each other directly or over the network 104.

In some embodiments, operations performed by one of these devices 206-232 may be performed sequentially, or in parallel with the operations of another device as may be coordinated by the order processing device 114. In some embodiments, the order processing device 114 tracks a prescription with the pharmacy based on operations performed by one or more than one devices 206-232.

In some embodiments, the pharmacy fulfillment device 112 may transport prescription drug containers, for example, between more than one of the devices 206-232 in the high volume fulfillment center, by use of pallets. The pallet sizing and pucking device 206 may configure pucks in a pallet. A pallet may be a transport structure for a number of prescription containers, and may include a number of cavities. A puck may be placed in one or more than one the cavities in a pallet by the pallet sizing and pucking device 206. The puck may include a receptacle sized and shaped to receive a prescription container. Such containers may be supported by the pucks during carriage in the pallet. Different pucks may have differently sized and shaped receptacles to accommodate containers of differing sizes, as may be appropriate for different prescriptions.

The arrangement of pucks in a pallet may be determined by the order processing device 114 based on prescriptions that the order processing device 114 decides to launch. The arrangement logic may be implemented directly in the pallet sizing and pucking device 206. Once a prescription is set to be launched, a puck suitable for the appropriate size of container for that prescription may be positioned in a pallet by a robotic arm or pickers. The pallet sizing and pucking device 206 may launch a pallet once pucks have been configured in the pallet.

The loading device 208 may load prescription containers into the pucks on a pallet by a robotic arm, a pick and place mechanism, or the like. In one embodiment, the loading device 208 has robotic arms or pickers to grasp a prescription container and move it to and from a pallet or a puck. The loading device 208 may also print a label that is appropriate for a container that is to be loaded onto the pallet, and apply the label to the container. The pallet may be located on a conveyor assembly during these operations, (e.g., at the high volume fulfillment center, etc.).

The inspect device 210 may verify that containers in a pallet are correctly labeled and in the correct spot on the pallet. The inspect device 210 may scan the label on one or more than one containers on the pallet. Labels of containers may be scanned or imaged in full or in part by the inspect device 210. Such imaging may occur after the container has been lifted out of its puck by a robotic arm, picker, etc., or the like, or may be otherwise scanned or imaged while retained in the puck. In some embodiments, images and/or video captured by the inspect device 210 may be stored in the storage device 110 as order data 118.

The unit of use device 212 may temporarily store, monitor, label and/or dispense unit of use products. In general, unit of use products are prescription drug products that may be delivered to a patient or member without being repackaged at the pharmacy. These products may include pills in a container, pills in a blister pack, inhalers, and the like. Prescription drug products dispensed by the unit of use device 212 may be packaged individually or collectively for shipping, or may be shipped in combination with other prescription drugs dispensed by other devices in the high volume fulfillment center.

At least some of the operations of devices 206-232 may be directed by the order processing device 114. For example, the manual fulfillment device 216, the review device 218, the automated dispensing device 214, and/or the packing device 226, etc. may receive instructions provided by the order processing device 114.

The automated dispensing device 214 may include one or more than one devices that dispense prescription drugs or pharmaceuticals into prescription containers in accordance with one or multiple prescription orders. In general, the automated dispensing device 214 may include mechanical and electronic components with, in some embodiments, software and/or logic to facilitate pharmaceutical dispensing that would otherwise be performed in a manual fashion by a pharmacist and/or pharmacist technician. For example, the automated dispensing device 214 may include high volume fillers that fill a number of prescription drug types at a rapid rate and blister pack machines that dispense and pack drugs into a blister pack. Prescription drugs dispensed by the automated dispensing devices 214 may be packaged individually or collectively for shipping, or may be shipped in combination with other prescription drugs dispensed by other devices in the high volume fulfillment center.

The manual fulfillment device 216 may provide for manually fulfillment of prescriptions. For example, the manual fulfillment device 216 may receive or obtain a container and enable fulfillment of the container by a pharmacist or pharmacy technician. In some embodiments, the manual fulfillment device 216 provides the filled container to another device in the pharmacy fulfillment devices 112 to be joined with other containers in a prescription order for a patient or member. In general, a manual fulfillment may include operations at least partially performed by a pharmacist or a pharmacy technician. For example, a person may retrieve a supply of the prescribed drug, may make an observation, may count out a prescribed quantity of drugs and place them into a prescription container, or the like. Some portions of the manual fulfillment process may be automated by use of a machine. For example, counting of capsules, tablets, or pills may be at least partially automated (e.g., through use of a pill counter, etc.). Prescription drugs dispensed by the manual fulfillment device 216 may be packaged individually or collectively for shipping, or may be shipped in combination with other prescription drugs dispensed by other devices in the high volume fulfillment center.

The review device 218 may process prescription containers to be reviewed by a pharmacist for proper pill count, exception handling, prescription verification, and the like. Fulfilled prescriptions may be manually reviewed and/or verified by a pharmacist, as may be required by state or local law. A pharmacist or other licensed pharmacy person who may dispense certain drugs in compliance with local and/or other laws may operate the review device 218 and visually inspect a prescription container that has been filled with a prescription drug. The pharmacist may review, verify, and/or evaluate drug quantity, drug strength, and/or drug interaction concerns, or otherwise perform pharmacist services. The pharmacist may also handle containers which have been flagged as an exception, such as containers with unreadable labels, containers for which the associated prescription order has been canceled, containers with defects, and the like. In an example, the manual review can be performed at the manual station.

The imaging device 220 may image containers once they have been filled with pharmaceuticals. The imaging device 220 may measure a fill height of the pharmaceuticals in the container based on the obtained image to determine if the container is filled to the correct height given the type of pharmaceutical and the number of pills in the prescription. Images of the pills in the container may also be obtained to detect the size of the pills themselves and markings thereon. The images may be transmitted to the order processing device 114, and/or stored in the storage device 110 as part of the order data 118.

The cap device 222 may be used to cap or otherwise seal a prescription container. In some embodiments, the cap device 222 may secure a prescription container with a type of cap in accordance with a patient preference (e.g., a preference regarding child resistance, etc.), a plan sponsor preference, a prescriber preference, or the like. The cap device 222 may also etch a message into the cap, although this process may be performed by a subsequent device in the high volume fulfillment center.

The accumulation device 224 accumulates various containers of prescription drugs in a prescription order. The accumulation device 224 may accumulate prescription containers from various devices or areas of the pharmacy. For example, the accumulation device 224 may accumulate prescription containers from the unit of use device 212, the automated dispensing device 214, the manual fulfillment device 216, and the review device 218, at the high volume fulfillment center. The accumulation device 224 may be used to group the prescription containers prior to shipment to the member or otherwise.

The literature device 228 prints, or otherwise generates, literature to include with prescription drug orders. The literature may be printed on multiple sheets of substrates, such as paper, coated paper, printable polymers, or combinations thereof. The literature printed by the literature device 228 may include information required to accompany the prescription drugs included in a prescription order, relating to prescription drugs in the order, financial information associated with the order (e.g., an invoice or an account statement, etc., or the like).

In some embodiments, the literature device 228 folds or otherwise prepares the literature for inclusion with a prescription drug order (e.g., in a shipping container, etc.). In some embodiments, the literature device 228 that prints the literature may be separate from the literature device that prepares the literature for inclusion with a prescription order.

The packing device 226 packages a prescription order in preparation for shipping the order. The packing device 226 may box, bag, or otherwise package the fulfilled prescription order for delivery. The packing device 226 may further place inserts, (e.g., literature or other papers, etc.), into the packaging received from the literature device 228 or otherwise. For example, bulk prescription orders may be shipped in a box, while other prescription orders may be shipped in a bag which may be a wrap seal bag.

The packing device 226 may label the box or bag with an address and a recipient's name. The label may be printed and affixed to the bag or box, be printed directly onto the bag or box, or otherwise associated with the bag or box, etc. The packing device 226 may sort the box or bag for mailing in an efficient manner (e.g., sort by delivery address, etc.). The packing device 226 may include ice or temperature sensitive elements for prescriptions which are to be kept within a temperature range during shipping in order to retain efficacy or otherwise. The ultimate package may then be shipped through postal mail, through a mail order delivery service that ships via ground and/or air (e.g., UPS, FEDEX, or DHL, etc.), through delivery service, through a locker box at a shipping site (e.g., AMAZON locker or a PO Box, etc.), or otherwise.

The unit of use packing device 230 packages a unit of use prescription order in preparation for shipping the order. The unit of use packing device 230 may include manual scanning of containers to be bagged for shipping to verify each container in the order. In an example embodiment, the manual scanning may be performed at a manual station. The pharmacy fulfillment device 112 may also include a mail manifest device 232 to print mailing labels used by the packing device 226 and may print shipping manifests and packing lists.

While the pharmacy fulfillment device 112 in FIG. 2 is shown to include single devices 206-232 multiple devices may be used. The devices 206-232 may be the same type or model of device or may be different device types or models. When multiple devices are present, the multiple devices may be of the same device type or models or may be a different device type or model. The types of devices 206-232 shown in FIG. 2 are example devices. In other configurations of the system 100, lesser, additional, or different types of devices may be included.

Moreover, multiple devices may share processing and/or memory resources. The devices 206-232 may be located in the same area or in different locations. For example, the devices 206-232 may be located in a building or set of adjoining buildings. The devices 206-232 may be interconnected (e.g. by conveyors, etc.), networked, and/or otherwise in contact with one another or integrated with one another, (e.g., at the high volume fulfillment center, etc.). In addition, the functionality of a device may be split among a number of discrete devices and/or combined with other devices.

FIG. 3 illustrates the order processing device 114, according to an example embodiment. The order processing device 114 may be used by one or more than one operators to generate prescription orders, make routing decisions, make prescription order consolidation decisions, track literature with the system 100, and/or view order status and other order related information. For example, the prescription order may be comprised of order components.

The order processing device 114 may receive instructions to fulfill an order without operator intervention. An order component may include a prescription drug fulfilled by use of a container through the system 100. The order processing device 114 may include an order verification subsystem 302, an order control subsystem 304, and/or an order tracking subsystem 306. Other subsystems may also be included in the order processing device 114.

The order verification subsystem 302 may communicate with the benefit manager device 102 to verify the eligibility of the member and review the formulary to determine appropriate copayment, coinsurance, and deductible for the prescription drug and/or perform a DUR. Other communications between the order verification subsystem 302 and the benefit manager device 102 may be performed for a variety of purposes.

The order control subsystem 304 controls various movements of the containers and/or pallets along with various filling functions during their progression through the system 100. In some embodiments, the order control subsystem 304 may identify the prescribed drug in one or more than one prescription orders as capable of being fulfilled by the automated dispensing device 214. The order control subsystem 304 may determine which prescriptions are to be launched and may determine that a pallet of automated-fill containers is to be launched.

The order control subsystem 304 may determine that an automated-fill prescription of a specific pharmaceutical is to be launched and may examine a queue of orders awaiting fulfillment for other prescription orders which will be filled with the same pharmaceutical. The order control subsystem 304 may then launch orders with similar automated-fill pharmaceutical needs together in a pallet to the automated dispensing device 214. As the devices 206-232 may be interconnected by a system of conveyors or other container movement systems, the order control subsystem 304 may control various conveyors to deliver the pallet from the loading device 208 to the manual fulfillment device 216, for example, from the literature device 228 to deliver paperwork as needed to fill the prescription.

The order tracking subsystem 306 may track a prescription order as it progresses (or stops) toward fulfillment. The order tracking subsystem 306 may track, record and/or update order history, order status, or the like. The order tracking subsystem 306 may store data locally (e.g., in a memory, etc.) or as a portion of the order data 118 stored in the storage device 110.

Analysis Equipment

In FIG. 4, dispensing equipment 404, such as the automated dispensing device 214, dispenses drugs into a bottle 408. For illustration purposes only, the bottle 408 is positioned on a conveyor 412. A bottle 416 has been moved from underneath the dispensing equipment 404 by the conveyor 412 to a position where a camera 420 can take a picture of the bottle 416. The camera 420 may be implemented by the imaging device 220. In various implementations, the conveyor 412 may stop in order to take a picture. In other implementations, the camera 420 may take a picture when the bottle 416 is located approximately underneath the camera 420.

Processing hardware 424 analyzes the picture to assess whether the correct drugs were dispensed into the bottle 416 and to determine the likelihood that an undesirable drug was included in the bottle 416. If the likelihood of an undesired drug being included or a completely mis-dispensed drug is high enough, the processing hardware 424 may alert an operator interface 428. For example, the operator interface 428 may include a light, a buzzer, or an electronic notification (such as a text message).

Packaging equipment 432 performs various tasks including placing a cap on the bottle 416 and placing the bottle 416 into packaging that can hold multiple bottles. For example, a box may hold a large number of bottles and the box is shipped to a distributor. In other implementations, the packaging equipment 432 packs the bottle 416 along with a small number of other bottles into a single order for delivery to a customer. A diverter 436 may divert the bottle 416 if the processing hardware 424 determines that the bottle 416 may have one or more undesirable drugs. The diverter 436 may move the bottle 416 aside for human observation or may discard the bottle 416. The dispensing equipment 404 may then fill another bottle after the bottle 416 is diverted or may wait for further input from a manual operator.

Example Analysis

In FIG. 5A, an example image taken of a bottle in plan view, such as by the camera 420 of FIG. 4, is shown. Note that the right-hand side of the bottle is truncated and that plastic ribs associated with the bottle are shown, such as at 450 and 452. After performing preprocessing according to the principles of the present disclosure, an image such as that shown in FIG. 5B may result. Much of the bottle has been removed and the ribs 450, 452 are reduced to stubs 460, 462. This allows image processing to focus on the drugs within the bottle and avoid false positives from the ribs and other components of the bottle.

In FIG. 6, a simplified graphical representation of image preprocessing is shown. First, the pixels of the image likely to correspond to the bottle are identified. These may be referred to as candidate pixels. As described in more detail below, the darkest 25% of the pixels in the image may be chosen as candidate pixels. In FIG. 6, the candidate pixels are shown and form a partial ring. In a real image, it is unlikely that the candidate pixels would form such a clearly defined ring and, in fact, it would be expected that some of the candidate pixels will not even be contiguous.

On the assumption that the first third of the image along a horizontal axis will include the left side of the bottle and the last third of the image along the horizontal axis will include the right side of the bottle, each column of the image is analyzed separately to count how many of the candidate pixels occur in each column.

When the candidate pixels form a clearly defined ring, as shown in FIG. 6, the column at the inside edge of the ring will have the greatest count of pixels within the first third of the image. This column is approximately indicated by reference numeral 480. The number of the candidate pixels in each column decreases as you move away from the column 480.

In FIG. 7, a plot shows a count of the number of candidate pixels on the Y-axis with the X-axis being the horizontal coordinate (column number) of the image. In FIG. 7, a peak level 484 is determined for the counts within the left third of the image and a peak level 488 is determined for the counts within the right third of the image. If the difference between the peak levels 484 and 488 is too great, this may be an indication that the side of the image having a lower peak level does not include the edge of the bottle. For example, looking at FIG. 6, the right-hand side of the bottle is missing and, therefore, the peak count of candidate pixels per column is never as high in the right third of the image as in the left third of the image.

Processing Hardware

In FIG. 8, a functional block diagram of the processing hardware 500 includes a preprocessing module 504, which receives the image from the camera 420 and provides a processed image to a dispensing analysis module 508. The dispensing analysis module determines whether there is likelihood of a mis-dispensed drug and reports that likelihood to a quality analysis module 512 as well as a remedial action module 516. The quality analysis 512 tracks apparent dispensing errors over time. The remedial action module 516 may actuate the operator interface 428 and/or the diverter 436.

In FIG. 9, a functional block diagram of an example implementation of the preprocessing module 504 includes a color adjustment module 604. The color adjustment module 604 receives a copy of the image as does an output module 608. The color adjustment module 604 adjusts the color of the image to make the pill bottle itself easier to identify. For example, the color adjustment module 604 may increase the contrast of the image. In various implementations, the color adjustment module may set the red, green, and blue values of each pixel according to equations described below.

A pixel identification module 612 identifies pixels likely to be part of the bottle based on the color-adjusted image. A multi-axis scanning module 616 outputs counts of these likely pixels along multiples axes. For example, a count of likely pixels for each column of pixels is provided to a first maxima detection module 620 while a count of likely pixels in each row of the image is provided to a second maxima detection module 624.

The first maxima detection module 620 may determine a maximum value within a first region of the image and a maximum value within a second region of the image. These values may be referred to as h1 and h3. For example, when the first maxima detection module 620 analyzes the horizontal axis, the first region may be the left-hand third of the image while the second region may be the right-hand third of the image. The remaining middle third of the image is therefore not analyzed by the first maxima detection module 620.

The second maxima detection module 624 may determine a maximum value within a first region of the image and a maximum value within a second region of the image. These values may be referred to as v1 and v3. For example, when the first maxima detection module 620 analyzes the vertical axis, the first region may be the top third of the image while the second region may be the bottom third of the image. The remaining middle third of the image is therefore not analyzed by the second maxima detection module 624.

An elliptic calculation module 628 defines an ellipse based on the positions of the maxima detected along the first axis by the first maxima detection module 620, which define endpoints of a first axis of the ellipse. The ellipse is also based on positions of the maxima detected along the second axis by the second maxima detection module 624, which define endpoints of a second axis of the ellipse. The longer of the two axes of the ellipse is called the major axis while the shorter of the two axes of the ellipse is called the minor axis.

If the difference between the two maxima values along an axis is greater than a predetermined value, then an assumption may be made that the lower of the maxima is not really the edge of the bottle, and instead the edge of the bottle is at the edge of the image. The endpoint of the corresponding axis of the ellipse would therefore be set to the edge of the image. The predetermined value may be 20% of the greater of the two maxima or may be 20% of the size of the image in the direction perpendicular to the axis.

In various implementations, the ellipse defined by the elliptic calculation module 628 may be a circle—that is, the major and minor axes of the ellipse are equal in length. For example, the elliptic calculation module 628 may average the major and minor axes of the ellipse to determine a diameter of the circle. In other implementations, the elliptic calculation module 628 may select one of the major or minor axes to be a diameter of the circle.

The elliptic calculation module 628 may calculate the boundaries of the ellipse as follows:

-   Center of bottle x and y coordinates: [(h1+h3)/2, (v1+v3)/2] -   Top center edge (T): [(h1+h3)/2, v1] -   Bottom center edge (B): [(h1+h3)/2, v3] -   Right center edge (R): [h3, (v1+v3)/2] -   Left center edge (L): [h1, (v1+v3)/2] -   Radius of Bottle (RAD): max[(h1+h3)/2, (v1+v3)/2] -   Upper Left Edge: [(h1+h3)/4, (v1+v3)/2−sin(pi/4)*RAD] -   Upper Right Edge: [3*(h1+h3)/4, (v1+v3)/2−sin(pi/4)*RAD] -   Lower Left Edge: [(h1+h3)/4, (v1+v3)/2+sin(pi/4)*RAD] -   Lower Right Edge: [3*(h1+h3)/4, (v1+v3)/2+sin(pi/4)*RAD]

The output module 608 uses the calculated ellipse to adjust a copy of the original image. This adjustment may include creating metadata identifying pixels that should be ignored when processing or may include adjusting the pixels to be ignored. For example, the metadata may be embedded in an image file or may be provided in conjunction with the image file. Adjusting the pixels to be ignored may include setting the pixels to be ignored to a predetermined color, such as black. The output module 608 outputs the processed image to the dispensing analysis module 508 of FIG. 8.

Flowcharts

In FIG. 10, a flowchart of overall operation of the quality control system is presented. Control begins at 704 where if a medication has been dispensed into a bottle, control continues at 708; otherwise, control remains at 704. At 708, control captures an image from above of the open bottle. At 712, control preprocesses the image, such as by removing regions outside of the bottle.

At 716, control identifies the likelihood of mis-dispensed medication based on processing of the preprocessed image. For example, a machine learning (ML) model such as a convolutional neural network (CNN) is first trained on images of pills, which captures characteristics such as color, shape, size, and markings. The images may be high resolution images of single pills taken at different orientations of the pills. The preprocessed image is then provided to the trained CNN to identify which pills are present inside of the bottle.

At 720, if the likelihood of mis-dispensed medication is greater than a predetermined threshold, control transfers to 724; otherwise, control transfers to 728. The trained CNN may output a set of probabilities indicating the likelihood that the respective pills are present in the bottle according to the preprocessed image. For example, the trained CNN may output the 5 most likely pills present in the image as well as the respective probabilities that the pill is actually present.

In another implementation, the CNN may have been trained to recognize N pills (as one example, N may be 1500) and output an N-dimensional vector, with each element of the vector indicating a likelihood of the corresponding pill being present in the bottle. Based on the prescription that controlled the pill dispense, a reference vector may be created with a 1.0 value (indicating 100% likelihood of presence) for the prescribed pill and zero values for the remaining N−1 elements of the vector. If the difference between the reference vector and the vector output form the CNN is greater than a predetermined distance threshold, control may determine that the likelihood of mis-dispensed medication is sufficiently great to trigger remedial action.

At 724, control performs remedial action based on the potential for a mis-dispensed mediation. For example, the remedial action may include notifying an operator, forcing a manual inspection of the bottle, and/or discarding and refilling the bottle.

Control then continues at 732. At 732, quality statistics are updated based on the identified likelihood of a mis-dispensed medication as well as based on any feedback from the manual inspection. These quality statistics may be used to judge false positives in the image processing as well as to identify problems with the dispensing equipment. Control then returns to 704. At 728, control caps the bottle and packages the bottle for distribution. Control then continues at 732.

FIGS. 11A and 11B together form a flowchart of example operation of preprocessing according to the principles of the present disclosure. Control begins in FIG. 11A at 800 when an image to be preprocessed is received. At 800, control adjusts the color of a copy of the image to increase contrast. For example, for each pixel, the red component of the pixel may be set equal to the sum of the green and blue values minus the red value, while the green and blue values are both set to zero. In other words, the color of the pixel is reduced to a single value, encoded in the red channel. A single value for color may also be referred to as grayscale, with the size of the value indicating how bright the pixel is on a black-to-white continuum.

At 804, control identifies the pixels that are most likely to be the exterior of the bottle. For example, all of the pixels in the image may be ordered by how dark they are and the darkest 25% of the pixels may be identified as the likely exterior pixels. At 808, control selects a first axis. For example, and as was shown in FIG. 6, the first axis may be the horizontal axis. In other implementations, the first axis is the vertical axis or an axis that is not perpendicular to either the horizontal or vertical axis. At 812, control selects the first third of the image along the selected axis. For example, when the selected axis is a horizontal axis, the first third of the image may be defined to be the left-hand third of the image.

At 816, control resets a variable named Max to 0. At 820, within the selected third of the image, control selects the first line of pixels perpendicular to the selected axis. As an example, if the selected third is the left-hand third of the image, the first line of pixels is the leftmost column of pixels. At 824, control counts the number of likely exterior pixels in the selected line. At 828, if the count is greater than the current value of Max, control transfers to 832; otherwise, control transfers to 836. Because Max was reset to 0 at 816, the first count will become the next Max. At 832, the variable Max is set to be equal to the count and a variable MaxLoc (corresponding to the location of the maximum) is set equal to the number of the selected line. Control then continues at 836.

At 836, if there are additional lines in the selected third of the image, control transfers to 840; otherwise control transfers to 844. At 840, control selects the next line of pixels and continues at 824. At 844, if the last third of the image is already selected, control transfers to 848; otherwise, control transfers to 852. At 852, the last third of the image was not selected, meaning that the first third of the image had been selected. Therefore, the value of MaxLoc is recorded as the position of interest for first third and value of Max is recorded as the peak within the first third of the image. Control then continues at 856, where control selects the last third of the image along the selected axis. Control then continues at 816.

At 848, the last third of the image had been selected and therefore the value of MaxLoc is recorded as the position of interest for the last third of the image and the value of Max is recorded as the peak of the last third of the image. Control then continues at 860 in FIG. 11B. At 860, control determines whether the peak of the last third of the image is less than 80% of the peak of the first third of the image. If so, control transfers to 864 to handle this discrepancy; otherwise, control transfers to 868. At 864, the relatively small value for the last third peak suggests that the edge of the bottle is not present within the last third of the image. Therefore, the edge of the bottle is assumed to be at the very end of the last third, and the last third position is set to be the end of the last third of the image. Control then continues at 872.

At 868, control determines whether the peak of the first third of the image is less than 80% of the peak of the last third of the image. If so, control transfers to 876 to handle the discrepancy; otherwise, control transfers to 872. At 876, the relative smallness of the first third peak indicates that the edge of the bottle is outside of the first third of the image and, therefore, the position of interest for the first third is set to be the very beginning of the first third of the image. Control then continues at 872.

At 872, if the second axis is selected, control transfers to 880; otherwise, control transfers to 884. At 884, the second axis has not yet been selected and, therefore, the first third position and the last third position are recorded with respect to the first axis. These positions correspond to the determined edges of the bottle along the first axis. Control continues at 888, where the second axis (such as the vertical axis) is selected. Control then returns to 812 in FIG. 11A.

At 880, the second axis has been selected and, therefore, the first third position and last third position are recorded for the second axis. These values correspond to the determined edges of the bottle along the second axis. Control continues at 892, where control determines a mathematically defined ellipse having a first diameter along the first axis from the first third position to the last third position determined for the first axis. The ellipse also has a second diameter along the second axis from the first third position to the last third position determined for the second axis. Control continues at 896, where the mathematically defined ellipse is used to mask out regions of the original image to be excluded from further processing. For example, all pixels outside of the defined ellipse within the original image may be set to black. Control then ends.

Example Machine

FIG. 12 shows a block diagram of a dedicated machine in the example form of a computer system 900 within which a set of instructions may be executed causing the machine to perform any one or more than one methods, processes, operations, or methodologies discussed herein. The devices 206-232, for example, may include the functionality of the one or more than one computer systems 900. These devices and systems are dedicated to performing any one or more than one methods, processes, operations, or methodologies discussed herein.

In an example embodiment, the machine operates as a standalone device or may be connected (e.g., networked, etc.) to other machines. In a networked deployment, the machine may operate in the capacity of a server or a client machine in server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.

The example computer system 900 includes a processor 902 (e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both, etc.), a main memory 904, and a static memory 906, which communicate with each other via a bus 908. The computer system 900 further includes a video display unit 910 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT), etc.). The computer system 900 also includes an alphanumeric input device 912 (e.g., a keyboard, etc.), a cursor control device 914 (e.g., a mouse, etc.), a drive unit 916, a signal generation device 918 (e.g., a speaker, etc.), and a network interface device 920.

The drive unit 916 includes a computer-readable medium 922 on which is stored one or more than one sets of instructions (e.g., instructions 924, etc.) embodying any one or more than one methodologies or functions described herein. The instructions 924 may also reside, completely or at least partially, within the main memory 904 and/or within the processor 902 during execution thereof by the computer system 900, the main memory 904 and the processor 902 also constituting non-transitory computer-readable media. When loaded with the instructions 924, the processor 902 is a machine dedicated to only the present processes and methodologies. The instructions 924 may further be transmitted or received over a network 926 via the network interface device 920.

CONCLUSION

In the foregoing detailed description, it can be seen that various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter may lie in less than all features of a single disclosed embodiment. Thus, the following claims are hereby incorporated into the detailed description, with each claim standing on its own as a separate embodiment.

The foregoing description is merely illustrative in nature and is in no way intended to limit the disclosure, its application, or uses. The broad teachings of the disclosure can be implemented in a variety of forms. Therefore, while this disclosure includes particular examples, the true scope of the disclosure should not be so limited since other modifications will become apparent upon a study of the drawings, the specification, and the following claims. It should be understood that one or more steps within a method may be executed in different order (or concurrently) without altering the principles of the present disclosure. Further, although each of the embodiments is described above as having certain features, any one or more of those features described with respect to any embodiment of the disclosure can be implemented in and/or combined with features of any of the other embodiments, even if that combination is not explicitly described. In other words, the described embodiments are not mutually exclusive, and permutations of one or more embodiments with one another remain within the scope of this disclosure.

The term “based on” or “using,” as used herein, reflects an open-ended term that can reflect other elements beyond those explicitly recited. The present disclosure makes reference to a robot and words of similar import. A robot can be a machine capable of carrying out a complex series of actions automatically. These complex series of actions may include picking up, orientating, positioning, and/or releasing a prescription component, a pill, a container, or other structure. The robot may be dedicated to a single series of movements or may be able to execute multiple series of movements. A robot may include a processor that received instructions and then executes instructions to control its movement. In another example, a robot may resemble a human being and replicate certain human movements and functions, may move location, have an articulated arm, have grasping structures that replicate fingers and do not damage containers, etc.

Spatial and functional relationships between elements (for example, between modules) are described using various terms, including “connected,” “engaged,” “interfaced,” and “coupled.” Unless explicitly described as being “direct,” when a relationship between first and second elements is described in the above disclosure, that relationship encompasses a direct relationship where no other intervening elements are present between the first and second elements, and also an indirect relationship where one or more intervening elements are present (either spatially or functionally) between the first and second elements. As used herein, the phrase at least one of A, B, and C should be construed to mean a logical (A OR B OR C), using a non-exclusive logical OR, and should not be construed to mean “at least one of A, at least one of B, and at least one of C.”

In the figures, the direction of an arrow, as indicated by the arrowhead, generally demonstrates the flow of information (such as data or instructions) that is of interest to the illustration. For example, when element A and element B exchange a variety of information but information transmitted from element A to element B is relevant to the illustration, the arrow may point from element A to element B. This unidirectional arrow does not imply that no other information is transmitted from element B to element A. Further, for information sent from element A to element B, element B may send requests for, or receipt acknowledgements of, the information to element A.

In this application, including the definitions below, the term “module” or the term “controller” may be replaced with the term “circuit.” The term “module” may refer to, be part of, or include processor hardware (shared, dedicated, or group) that executes code and memory hardware (shared, dedicated, or group) that stores code executed by the processor hardware.

The module may include one or more interface circuits. In some examples, the interface circuits may include wired or wireless interfaces that are connected to a local area network (LAN), the Internet, a wide area network (WAN), or combinations thereof. The functionality of any given module of the present disclosure may be distributed among multiple modules that are connected via interface circuits. For example, multiple modules may allow load balancing. In a further example, a server (also known as remote, or cloud) module may accomplish some functionality on behalf of a client module.

The term code, as used above, may include software, firmware, and/or microcode, and may refer to programs, routines, functions, classes, data structures, and/or objects. Shared processor hardware encompasses a single microprocessor that executes some or all code from multiple modules. Group processor hardware encompasses a microprocessor that, in combination with additional microprocessors, executes some or all code from one or more modules. References to multiple microprocessors encompass multiple microprocessors on discrete dies, multiple microprocessors on a single die, multiple cores of a single microprocessor, multiple threads of a single microprocessor, or a combination of the above.

Shared memory hardware encompasses a single memory device that stores some or all code from multiple modules. Group memory hardware encompasses a memory device that, in combination with other memory devices, stores some or all code from one or more modules.

The term memory hardware is a subset of the term computer-readable medium. The term computer-readable medium, as used herein, does not encompass transitory electrical or electromagnetic signals propagating through a medium (such as on a carrier wave); the term computer-readable medium is therefore considered tangible and non-transitory. Non-limiting examples of a non-transitory computer-readable medium are nonvolatile memory devices (such as a flash memory device, an erasable programmable read-only memory device, or a mask read-only memory device), volatile memory devices (such as a static random access memory device or a dynamic random access memory device), magnetic storage media (such as an analog or digital magnetic tape or a hard disk drive), and optical storage media (such as a CD, a DVD, or a Blu-ray Disc).

The apparatuses and methods described in this application may be partially or fully implemented by a special purpose computer created by configuring a general purpose computer to execute one or more particular functions embodied in computer programs. The functional blocks and flowchart elements described above serve as software specifications, which can be translated into the computer programs by the routine work of a skilled technician or programmer.

The computer programs include processor-executable instructions that are stored on at least one non-transitory computer-readable medium. The computer programs may also include or rely on stored data. The computer programs may encompass a basic input/output system (BIOS) that interacts with hardware of the special purpose computer, device drivers that interact with particular devices of the special purpose computer, one or more operating systems, user applications, background services, background applications, etc.

The computer programs may include: (i) descriptive text to be parsed, such as HTML (hypertext markup language), XML (extensible markup language), or JSON (JavaScript Object Notation), (ii) assembly code, (iii) object code generated from source code by a compiler, (iv) source code for execution by an interpreter, (v) source code for compilation and execution by a just-in-time compiler, etc. As examples only, source code may be written using syntax from languages including C, C++, C #, Objective-C, Swift, Haskell, Go, SQL, R, Lisp, Java®, Fortran, Perl, Pascal, Curl, OCaml, Javascript®, HTML5 (Hypertext Markup Language 5th revision), Ada, ASP (Active Server Pages), PHP (PHP: Hypertext Preprocessor), Scala, Eiffel, Smalltalk, Erlang, Ruby, Flash®, Visual Basic®, Lua, MATLAB, SIMULINK, and Python®.

None of the elements recited in the claims are intended to be a means-plus-function element within the meaning of 35 U.S.C. § 112(f) unless an element is expressly recited using the phrase “means for” or, in the case of a method claim, using the phrases “operation for” or “step for.” 

What is claimed is:
 1. A machine comprising: a camera configured to capture a first image of medication held by a receptacle; memory hardware that stores code; and processor hardware that executes the code stored by the memory hardware, wherein the code implements: a color processing module configured to create a second image based on the first image in which each pixel of the second image is identified by a single value; a pixel identification module configured to divide pixels of the second image into first and second mutually exclusive subsets of pixels, wherein pixels of the first subset are more likely to correspond to the receptacle than are pixels of the second subset; a scanning module configured to process the second image along a first axis by, for each point along the first axis: defining a line that is perpendicular to the first axis and intersects the first axis at the point; counting how many of the pixels in the second image located along the line are in the first subset; and recording the count; a maxima detection module configured to determine a first local maximum of the counts and a second local maximum of the counts; an elliptic calculation module configured to: estimate a position of a first edge of the receptacle based on a position of the first local maximum along the first axis; estimate a position of a second edge of the receptacle based on a position of the second local maximum along the first axis; and define an ellipse based on the first and second edges; and an output module configured to output a processed image based on the first image, wherein the processed image indicates that areas of the first image that are outside the defined ellipse are excluded from further processing.
 2. The machine of claim 1, wherein the color processing module is configured to, for each pixel of the first image, generate a corresponding pixel of the second image exclusive of any other pixels of the first image.
 3. The machine of claim 2, wherein the color processing module is configured to, for each pixel of the first image, generate the corresponding pixel of the second image by calculating a grayscale value of the pixel.
 4. The machine of claim 2, wherein the color processing module is configured to, for each pixel of the first image, generate the corresponding pixel of the second image by: setting a green value of the corresponding pixel to a sum of a green value of the pixel and a blue value of the pixel minus a red value of the pixel; setting a green value of the corresponding pixel to zero; and setting a blue value of the corresponding pixel to zero.
 5. The machine of claim 1, wherein the output module is configured to include metadata with the processed image, wherein the metadata identifies the areas of the first image that are excluded from further processing.
 6. The machine of claim 1, wherein the output module is configured to set the areas of the first image that are excluded from further processing to a black color.
 7. The machine of claim 1, wherein: the maxima detection module is configured to: determine the first local maximum within a first region of the second image; and determine the second local maximum within a second region of the second image; the first region and the second region are non-overlapping; and a third region of the second image is nonzero in size, does not overlap the first region, and does not overlap the second region.
 8. The machine of claim 1, wherein: the scanning module is configured to process the second image along a second axis by, for each point along the second axis: defining a line that is perpendicular to the second axis and intersects the second axis at the point; counting how many of the pixels in the second image located along the line are in the first subset; and recording the count; the code further implements a second maxima detection module configured to determine a first local maximum of the counts for the second axis and a second local maximum of the counts for the second axis; and the elliptic calculation module is configured to: estimate a position of a third edge of the receptacle based on a position of the first local maximum along the second axis; estimate a position of a fourth edge of the receptacle based on a position of the second local maximum along the second axis; and define the ellipse based on the first, second, third, and fourth edges.
 9. The machine of claim 8, wherein: the first axis is parallel to a first edge of the first image; and the second axis is perpendicular to the first axis.
 10. The machine of claim 1, wherein the elliptic calculation module is configured to, in response to the second local maximum being less than the first local maximum by more than a predetermined amount, estimate the position of the second edge of the receptacle to be an edge of the first image.
 11. A method comprising: capturing a first image of medication held by a receptacle; creating a second image based on the first image in which each pixel of the second image is identified by a single value; dividing pixels of the second image into first and second mutually exclusive subsets of pixels, wherein pixels of the first subset are more likely to correspond to the receptacle than are pixels of the second subset; processing the second image along a first axis by, for each point along the first axis: defining a line that is perpendicular to the first axis and intersects the first axis at the point; counting how many of the pixels in the second image located along the line are in the first subset; and recording the count; determining a first local maximum of the counts and a second local maximum of the counts; estimating a position of a first edge of the receptacle based on a position of the first local maximum along the first axis; estimating a position of a second edge of the receptacle based on a position of the second local maximum along the first axis; defining an ellipse based on the first and second edges; and outputting a processed image based on the first image, wherein the processed image indicates that areas of the first image that are outside the defined ellipse are excluded from further processing.
 12. The method of claim 11, wherein the creating the second image includes, for each pixel of the first image, generating a corresponding pixel of the second image exclusive of any other pixels of the first image.
 13. The method of claim 12, wherein the creating the second image includes, for each pixel of the first image, generating the corresponding pixel of the second image by: setting a green value of the corresponding pixel to a sum of a green value of the pixel and a blue value of the pixel minus a red value of the pixel; setting a green value of the corresponding pixel to zero; and setting a blue value of the corresponding pixel to zero.
 14. The method of claim 11, further comprising at least one of: including metadata with the processed image, wherein the metadata identifies the areas of the first image that are excluded from further processing; and setting the areas of the processed image that are excluded from further processing to a black color.
 15. The method of claim 11, wherein: the first local maximum is determined within a first region of the second image; the second local maximum is determined within a second region of the second image; the first region and the second region are non-overlapping; and a third region of the second image is nonzero in size, does not overlap the first region, and does not overlap the second region.
 16. The method of claim 11, further comprising: processing the second image along a second axis by, for each point along the second axis: defining a line that is perpendicular to the second axis and intersects the second axis at the point; counting how many of the pixels in the second image located along the line are in the first subset; and recording the count; determining a first local maximum of the counts for the second axis and a second local maximum of the counts for the second axis; estimating a position of a third edge of the receptacle based on a position of the first local maximum along the second axis; estimating a position of a fourth edge of the receptacle based on a position of the second local maximum along the second axis; and defining the ellipse based on the first, second, third, and fourth edges.
 17. The method of claim 16, wherein: the first axis is parallel to a first edge of the first image; and the second axis is perpendicular to the first axis.
 18. The method of claim 11, further comprising, in response to the second local maximum being less than the first local maximum by more than a predetermined amount, estimating the position of the second edge of the receptacle to be an edge of the first image.
 19. The method of claim 11 further comprising obtaining prescription information corresponding to the receptacle, wherein the prescription information specifies a desired medication; providing the processed image to a trained machine learning model to identify probabilities of medications present in the receptacle; based on the identified probabilities of medications, determining a likelihood that at least one medication in the receptacle is not the desired medication; and in response to the likelihood exceeding a predetermined threshold, initiating remedial action with respect to the receptacle.
 20. A non-transitory computer-readable medium storing instructions, the instructions comprising: capturing a first image of medication held by a receptacle; creating a second image based on the first image in which each pixel of the second image is identified by a single value; dividing pixels of the second image into first and second mutually exclusive subsets of pixels, wherein pixels of the first subset are more likely to correspond to the receptacle than are pixels of the second subset; processing the second image along a first axis by, for each point along the first axis: defining a line that is perpendicular to the first axis and intersects the first axis at the point; counting how many of the pixels in the second image located along the line are in the first subset; and recording the count; determining a first local maximum of the counts and a second local maximum of the counts; estimating a position of a first edge of the receptacle based on a position of the first local maximum along the first axis; estimating a position of a second edge of the receptacle based on a position of the second local maximum along the first axis; defining an ellipse based on the first and second edges; and outputting a processed image based on the first image, wherein the processed image indicates that areas of the first image that are outside the defined ellipse are excluded from further processing. 